{
  description = "My personal Nixpkgs repository (contains QQ, WeChat, etc.)";

  # 1. 声明输入依赖（依赖官方 Nixpkgs，确保包能复用官方依赖）
  inputs = {
    # 官方 Nixpkgs（指定分支，如 nixos-unstable 或具体版本）
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    # 可选：添加其他 flake 依赖（如需要其他第三方仓库的包）
    # nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
  };

  # 2. 声明输出（暴露包、overlay、开发环境等）
  outputs =
    { self, nixpkgs }:
    let
      # 定义支持的平台（与你 QQ 包的 platforms 对应）
      supportedSystems = [
        "x86_64-linux"
        "aarch64-linux"
        "x86_64-darwin"
        "aarch64-darwin"
      ];

      # 为每个平台创建 pkgs 集合（官方 Nixpkgs + 自定义 overlay）
      forAllSystems =
        f:
        nixpkgs.lib.genAttrs supportedSystems (
          system:
          f (
            import nixpkgs {
              inherit system;
              # 加载自定义 overlay（修改/添加包）
              overlays = [ self.overlays.default ];
              config = {
                allowUnfree = true;
                # （可选）只允许 QQ：
                # allowUnfreePredicate = pkg: pkg.pname == "qq";
              };
            }
          )
        );
    in
    {
      # 🔴 核心输出：自定义 overlay（供外部使用，如 NixOS 配置、nix shell）
      overlays.default = final: prev: {
        # 导入所有自定义包（来自 pkgs/default.nix）
        inherit (import ./pkgs { pkgs = final; })
          qq
          win10-font
          wpsoffice
          ;
      };

      # 🔴 核心输出：自定义包集合（可通过 nix build .#qq 直接构建）
      packages = forAllSystems (pkgs: {
        # 直接复用 overlay 中的包（避免重复定义）
        qq = pkgs.qq;
        win10-font = pkgs.win10-font;
        wpsoffice = pkgs.wpsoffice;
      });

      # 可选：开发环境（nix develop 进入，包含打包所需工具）
      devShells = forAllSystems (pkgs: {
        default = pkgs.mkShell {
          nativeBuildInputs = with pkgs; [
            nixpkgs-fmt # 格式化 Nix 代码
            editorconfig-checker # 检查代码规范
            # 其他打包工具（如 dpkg、undmg，按需添加）
          ];
        };
      });

      # 可选：NixOS 模块（供 NixOS 系统使用）
      nixosModules.default = import ./modules;
    };
}
